Telephone switching systems such as PABXs and central offices provide specialized applications. For example, one type of specialized application is automatic call distribution (ACD) which distributes incoming calls among agents. Such systems can be used for answering inquiries as to departure or arrival times of aircraft, to take reservations for theatre, aircraft, trains, etc.
In such ACD systems, agents are typically grouped in hunt groups of telephones, each hunt group defining a community of interest. Every telephone or other station apparatus, such as a computer terminal is accessible through a telephone number, which often is an 800 number.
When a subscriber calls that telephone number, the telephone system routes the call to an idle agent within a hunt group of agents accessed by the number. All agents within the group are accessible by the same number, but the system determines which agent has been the "longest idle agent" and routes the call to that agent. If all telephones within that hunt group are busy, the caller is often routed to a recorded announcement device which informs the caller that the call will be serviced as soon as an agent becomes available.
In previous ACD systems, such as provided in conjunction with the telephone systems sold by Mitel Corporation under the type designations SX2000.TM., and SX200D.TM., a hunt group is created which contains the numeric designation of all of the agents, e.g. "5001", "5002", . . . "5010". A free list is established whose maximum size is equivalent to the maximum number of agents which can be programmed into the system. This list is in one to one correspondence with an array of agent records which, among other items, contains an unique number to identify each particular agent.
When an agent logs onto the system, the agent is added to the end of the free list, which thus designates that the agent is ready to receive calls.
When a call arrives to a hunt group number, the free list of agents is traversed from start to the end. For every agent on the free list, a lookup occurs to determine if the agent is a member of the dialed hunt group. If the determination is positive, the system has an indication that this is the "longest idle agent" (due to the ordering of the free list). The call is then routed to the agent and the agent record is removed from the free list. When the agent completes the servicing of the call and returns to the idle state, the agent record is added to the end of the free list. Since the record is added to the end of the free list, the records are automatically in the "longest idle agent" order if the free list is traversed from start to end.
However this type of system has exhibited certain problems. In particular, the time to locate an idle agent for a particular hunt group has been found to be excessive if the free list is large and an idle agent for the hunt group either does not exist or exists near the end of the free list. This excessive time occurs because either the entire or nearly the entire list must be checked before the idle agent for that hunt group is located or if it is determined that no idle agent exists.